/*
  题目描述
 【题目描述】
    你目前有 500 块硬币 A 枚, 100 块硬币 B 枚, 50 块硬币 C 枚.
    从这些硬币中选出若干枚, 恰好凑成 X 块的方法有多少种?
 【输入格式】
    第 1 行, 1个正整数 A
    第 2 行, 1个正整数 B
    第 3 行, 1个正整数 C
    第 4 行, 1个正整数 X
 【输出格式】
    输出一个整数, 恰好凑成 X 块的方法数
 【输入样例#1】
    2
    2
    2
    100
 【输出样例#1】
    2
 【输入样例#2】
    30
    40
    50
    6000
 【输出样例#2】
    213
 【数据说明】
    0 ≤ A, B, C ≤ 50
    A + B + C ≥ 1
    50 ≤ X ≤ 20000,
    X 一定是 50 的倍数
*/

#include <iostream>
using namespace std;

int main() {
    int a,b,c;
    int y = 0;
    int x;

    cin >> a >> b >> c >> x;

    for (int i = 0; i <= a; i++) {
        for (int j = 0; j <= b ; j++) {
            for (int k = 0; k <= c; k++) {
                if (i * 500 + j * 100 + k * 50 == x) {
                    y++;
                }
            }
        }
    }
    cout << y;

    return 0;
}